package com.drug.mingkang.permission.service;

import com.drug.mingkang.permission.model.PerUsers;
import com.drug.mingkang.permission.model.vo.PerUsersVo;
import com.drug.mingkang.utils.ResponseMessage;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpSession;
import java.util.Map;

/**
 * 用户表(PerUsers)表服务接口
 *
 * @author wenchangjian
 * @since 2020-08-11 23:25:01
 */
public interface PerUsersService {

    /**
     * 通过ID查询单条数据
     *
     * @param userId 主键
     * @return 实例对象
     */
    PerUsers queryById(Integer userId);

    /**
     * 查询多条数据
     *
     * @param perUsersVo 实例对象
     * @return 对象列表
     */
    Map<String, Object> queryAllByLimit(PerUsersVo perUsersVo);

    /**
     * 新增数据
     *
     * @param perUsers 实例对象
     * @return 实例对象
     */
    int insert(PerUsers perUsers);

    /**
     * 新增选择数据
     * @param perUsers
     * @return
     */
    ResponseMessage insertSelective(PerUsers perUsers);

    /**
     * 总条数
     * @param perUsersVo 实例对象
     * @return
     */
    int count(PerUsersVo perUsersVo);

    /**
     * 修改数据
     *
     * @param perUsers 实例对象
     * @return 实例对象
     */
    ResponseMessage update(PerUsers perUsers);

    /**
     * 通过主键删除数据
     *
     * @param userId 主键
     * @return 是否成功
     */
    ResponseMessage deleteById(Integer userId);


    /**
     * 根据账号密码查找用户
     * @param username
     * @param password
     * @return
     */
    PerUsers findUser(String username, String password);

    /**
     * 用户修改密码
     * @param perUsers
     * @return
     */
    ResponseMessage updatePassword(PerUsers perUsers);

    /**
     * 审核用户
     * @param userId    用户id
     * @param userName  用户名
     * @return
     */
    ResponseMessage auditUser(Integer userId, String userName);

    /**
     * 查询是否有重复名称
     * @param userName  用户名
     * @return
     */
    PerUsers findUsers(String userName);

    /**
     * 用户新增 编辑
     * @param perUsers  对象
     * @param imgFile   图片
     * @param session   当前会话
     * @param perUsers
     * @return
     */
    ResponseMessage insertAndEdit(PerUsers perUsers, MultipartFile imgFile, HttpSession session, Integer[] roleIdAll) throws Exception;

    /**
     * 本人修改基本信息
     * @param perUsers      用户对象
     * @param imgFile       图片文件
     * @param session       当前session
     * @return ResponseMessage  返回
     */
    ResponseMessage updateBasicInformation(PerUsers perUsers, MultipartFile imgFile, HttpSession session) throws Exception;

    /**
     * 删除所选用户
     * @param idAll  用户id数组
     * @return
     */
    ResponseMessage deleteAllById(String[] idAll);


    /**
     * 根据用户名重置密码
     * @param userPassword  用户密码
     * @param userName      用户名
     * @return
     */
    ResponseMessage resetPassword(String userPassword, String userName);
}